时间序列数据

整理时间序列数据之前,需要有时间序列数据。可以直接创建,也可以从指定文件中导入时间序列数据。[大谦Excel,dqexcel点com]

创建时间序列数据

【问题描述】

用pandas创建时间序列数据。

【示例7-1】

本例指定起始日期和时间为2022/3/18 00:00:00,每隔一个小时取一个1到10之间的随机数,取100个数。日期时间数据为1列,列名为“时间”,随机数为1列,列名为“测量值”,将“时间”列作为索引列,构造一个时间序列数据。

  • 编写下面的代码:
code.python
import pandas as pd
import numpy as np
# 指定起始时间和测量次数
start_time = pd.to_datetime('2022-03-18 00:00:00')
n_measurements = 100
# 生成1到10之间的随机数序列
random_data = np.random.randint(1, 11, size=n_measurements)
# 生成时间序列
time_series = pd.date_range(start=start_time, periods=n_measurements,
                            freq='H', name='时间')
# 将数据存储为Series对象
series_data = pd.Series(random_data, index=time_series, name='测量值')
# 打印输出结果
print(series_data)
# 将数据保存到文件中
writer = pd.ExcelWriter('D:/Samples/ch07/01 时间序列数据/时间序列.xlsx')
series_data.to_excel(writer)
writer.save()

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,在IDLE Shell窗口输出以下时间序列数据。

code.python
>>> == RESTART: D:/Samples/1.py =
时间
2022-03-18 00:00:00     5
2022-03-18 01:00:00     9
2022-03-18 02:00:00     6
2022-03-18 03:00:00     9
2022-03-18 04:00:00     8
                       ..
2022-03-21 23:00:00     1
2022-03-22 00:00:00     5
2022-03-22 01:00:00    10
2022-03-22 02:00:00     6
2022-03-22 03:00:00     9
Freq: H, Name: 测量值, Length: 100, dtype: int32

在路径”D:/Samples/ch07/01 时间序列数据/ “下找到刚刚生成的Excel文件“时间序列.xlsx”。

【知识点扩展】

创建时间序列数据,关键在于创建日期时间数据索引列。主要有两种方法。

一种是逐个直接指定日期时间,如

code.python
>>> import pandas as pd
>>> import numpy as np
>>> import datetime
>>> dt=pd.to_datetime(["1/10/2023",np.datetime64("2023-02-01"),\
datetime.datetime(2023,3,21)]);
>>> ser = pd.Series([1,2,3],index=dt)
>>> ser
2023-01-10    1
2023-02-01    2
2023-03-21    3
dtype: int64

第二种是类似本例的情况,指定起始日期时间、取数频率和次数,用pandas的data_range函数得到等间隔的时间序列数据。

从文件导入时间序列数据

【问题描述】

。从Excel文件导入时间序列数据。

【示例7-2】

本例使用的Excel文件的完整路径为“D:/Samples/ch07/01 时间序列数据/时间序列.xlsx”。该文件打开后如图7-1所示,从该文件导入时间序列数据。

Document Image

图7-1 测量数据

  • 编写下面的代码:
code.python
import pandas as pd
# 定义文件路径
file_path = “D:/Samples/ch07/01 时间序列数据/时间序列.xlsx”
# 使用pandas读取Excel文件数据,第一个工作表,第1列为索引列,引擎为”openpyxl”
df = pd.read_excel(file_path, sheet_name=0, index_col=0, engine=”openpyxl”)
# 输出导入的数据
print(df)

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,在IDLE Shell窗口输出导入的数据。

code.python
>>> == RESTART: D:/Samples/1.py =
                     测量值
时间
2022-03-18 00:00:00    5
2022-03-18 01:00:00    9
2022-03-18 02:00:00    6
2022-03-18 03:00:00    9
2022-03-18 04:00:00    8
…                  …
2022-03-21 23:00:00    1
2022-03-22 00:00:00    5
2022-03-22 01:00:00   10
2022-03-22 02:00:00    6
2022-03-22 03:00:00    9
[100 rows x 1 columns]

【知识点扩展】

使用pandas的read_excel等函数导入文件数据到DataFrame,将日期时间类型的列指定为索引列。